// 封装网络请求
// utils/request.js

// 登录状态管理
const loginManager = {
  // 检查登录状态
  checkLogin() {
    const token = uni.getStorageSync('token')
    if (!token) {
      // 未登录，跳转到登录页或直接登录
      return this.wxLogin()
    } else {
      // 已登录，返回token
      return Promise.resolve(token)
    }
  },
  
  // 微信登录
  wxLogin() {
    return new Promise((resolve, reject) => {
      uni.login({
        provider: 'weixin',
        success: (loginRes) => {
          if (loginRes.code) {
            // 获取到临时登录凭证，发送到后端
            this.code2Session(loginRes.code).then(resolve).catch(reject)
          } else {
            console.error('登录失败！' + loginRes.errMsg)
            uni.showToast({
              title: '登录失败，请重试',
              icon: 'none'
            })
            reject(new Error('微信登录失败'))
          }
        },
        fail: (err) => {
          console.error('uni.login失败:', err)
          uni.showModal({
            title: '提示',
            content: '无法获取微信登录权限，请检查设置',
            showCancel: false
          })
          reject(err)
        }
      })
    })
  },
  
  // 发送code到后端换取token
  code2Session(code) {
    return request({
      url: 'login-wechat/info',
      method: 'get',
      data: { js_code: code }
    }).then(res => {
      if (res.status === 200 && res.data.token) {
        // 登录成功，保存token
        uni.setStorageSync('token', res.data.token)
        uni.setStorageSync('userInfo', res.data)
        
        // 触发登录成功事件，通知其他页面
        uni.$emit('loginSuccess', res.data)
        return res.data.token
      } else {
        console.error('登录接口错误:', res.msg)
        uni.showToast({
          title: res.msg || '登录失败',
          icon: 'none'
        })
        return Promise.reject(new Error(res.msg || '登录失败'))
      }
    })
  },
  
  // 验证token有效性
  verifyToken(token) {
    return request({
      url: '/api/auth/verify',
      method: 'POST',
      data: { token }
    }).then(res => {
      if (res.code !== 0) {
        // token无效，清除并重新登录
        uni.removeStorageSync('token')
        return this.wxLogin()
      }
      return token
    }).catch(() => {
      // 验证失败，重新登录
      uni.removeStorageSync('token')
      return this.wxLogin()
    })
  }
}

export function request(options) {
  return new Promise((resolve, reject) => {
    uni.request({
		// https://apishop.aa.ka.dajunzhu.cn
      url: 'https://apishop.aa.ka.dajunzhu.cn/v1/'+options.url,
      // url: 'http://apishop.aa.ka.dajunzhu.cn/v1/'+options.url,
      method: options.method || 'GET',
      data: options.data || {},
      header: {
		  
        'content-type': options.contentType || 'application/x-www-form-urlencoded',
        'token': uni.getStorageSync('token') || ''
      },
      success: (res) => {
        if (res.statusCode === 200) {
          resolve(res.data)
		  // if(res.data.status==401){
			 //  uni.switchTab({
			 //  	url:"/pages/index/index"
			 //  })
		  // }
        } else {
          reject(res)
        }
      },
      fail: (err) => {
        reject(err)
      }
    })
  })
}    